/**
 * Created by Administrator on 2016/6/21.
 */

module.exports = function(app){

    //加载POST提交支持
    var bodyParser = require('body-parser');
    //设置下post提交   用户在访问某个页面（路径）的时候必须要经过后面bodyParser.urlencoded({extended:true}的处理
    app.use(bodyParser.urlencoded({extended:true}));
    //加载文件的上传下载支持
    var multer = require('multer');
    //加载cookie支持
    var cookieParser = require('cookie-parser');//express也不支持cookie因此需要加载
    var fs = require('fs');
    app.use(cookieParser());


    app.post('/register',function(req,res){
        //req.query，req.body拿到数据，get提交的数据在req.query里面，如果是post提交，数据在req.body里面

        //首先我们先保存下用户的IP
        //我在拿到数据之前，在这个body里面新增了两个属性，第一个属性是用户的IP，第二个属性是
        //用户发送请求的当前时间，我也想记录一下，和数据放在一起，存到文件当中去

        req.body.ip = req.ip;
        //再保存下日期
        req.body.time = new Date();
        //取一下用户名，req.body.petname
        //取一下密码，req.body.password
        //取一下email，req.body.email

        //发送函数
        function send(code,message){
            res.status(200).json({code,message})
        }

        //把数据保存在一个users/用户名命名.txt的文件中
        //保存数据到文件的一个函数，将注册的用户名保存到users/用户名.txt文件当中去
        //这样，我就能知道那些人注册了，我才可以进行登录的判断

        //把数据保存在一个users/用户名命名.txt的文件中
        function saveFile(){
            //首次，我要确定一下保存的文件目录是在users/用户名.txt文件当中去
            //以后写文件路径的时候加``，先记住。
            var filename = `users/${req.body.petname}.txt`;

            //fs是专门来负责文件的读写的
            //fs.exists它是用来检测文件是否存在的这么一个函数
            //传递了检测文件的文件名，检测完文件名调用回调函数，结果是exists
            //测试某个路径下的文件是否存在。
            //回调函数包含一个参数exists，true则文件存在，否则是false。
            fs.exists(filename,function(exists){
                if(exists){
                    //如果存在的话，在模态框中提示用户名已经存在了
                    //用户注册的信息，我查看一下，在这个文件中已经存在了，那么我就返回给
                    //前端，告诉他，用户名已经存在了，前端呢，通过modal输出结果
                    send('error','用户名已经存在');
                    //res.status(200).JSON.({code:"error",message:'用户名已经存在'});
                }else{
                    //如果不存在的话，保存一下
                    //如果文件名不存在，说明可以正常的注册了
                    //fs.appendFile是用来打开文件并写入的一个函数
                    //第一个参数，要写入的文件的名称
                    //第二个参数，要写入哪些数据
                    //第三个参数，回调函数当中，返回错误信息，err
                    //根据返回的信息，send不同的状态
                    //JSON.stringify(req.body) 数据JSON化
                    fs.appendFile(filename,JSON.stringify(req.body),function(err){
                        //让用户知道结果是成功还是失败
                        if(err){
                            send('error','系统错误');
                        }else{
                            send('success','注册成功');
                        }
                    })
                }
            })
        }
        //创建我们的users文件夹
        fs.exists('users',function(exists){
            if(exists){
                saveFile();
            }else{
                //mkdir建立一个新的子目录
                //以异步的方式创建文件目录。如果目录已存在，将抛出异常
                //path            将创建的目录路径
                // mode          目录权限（读写权限），默认0777
                //callback      回调，传递异常参数err
                fs.mkdir('users',function(err){
                    if(err){
                        send('error','系统错误');
                    }else{
                        saveFile();
                    }
                })
            }
        })
    })
//登录的处理
    app.post('/signin',function(req,res){
        //第一步打开对应的用户的文件夹
        var filename = `users/${req.body.petname}.txt`;
        function send(code,message){
            res.status(200).json({code,message});
        }
        //第二步，我先看一下，用户提交的用户名是否注册了
        fs.exists(filename,function(exists){
            if(exists){
                //看看密码是否正确
                //readFile读取文件
                fs.readFile(filename,function(err,data){
                    if(err){
                        send('error','系统错误');
                    }else{
                        //把json数据转化为js对象
                        var user = JSON.parse(data);
                        //剩下比较密码了
                        if(user.password == req.body.password){
                            //在服务器端创建一个cookie，保存取来，里面存储的是用户名信息
                            res.cookie('petname',req.body.petname);
                            send('success','登录成功');
                        }
                        else {
                            send('error','密码错误');
                        }
                    }
                })
            }else{
                send('error','用户名不存在');
            }
        })
    })
    

//登录
    app.get('/signin',function(req,res){
        res.render('signin',{
            user:req.cookies.petname,
            title:'登录页面'
        })
    })
    app.get('/index',function(req,res){
        res.render('index',{
            user:req.cookies.petname,
            title:'登录页面'
        })
    })
//注册
    app.get('/register',function(req,res){
        res.render('register',{
            user:req.cookies.petname,
            title:'注册页面'
        })
    })
    app.get('/',function(req,res){
        res.render('index',{
            user:req.cookies.petname,
            title:'首页'
        })
    })
   
    app.get('/signout',function(req,res){
        res.clearCookie('petname');
        res.redirect('/');
    })



    app.get('/pro-introduce',function(req,res){
        res.render('pro-introduce',{
            user:req.cookies.petname,
            title:'产品页面'
        })
    })





}
